package com.wang.sys.pojo;

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.wang.common.pojo.BasePojo;
import com.wang.common.util.ConstatFinalUtil;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.io.Serializable;
import java.util.Objects;

/**
 * 系统_文件表
 *
 * @author ZjxMi
 */
@TableName(value = "at_sys_files")
@Data
@EqualsAndHashCode(callSuper=false)
public class AtSysFiles extends BasePojo implements Serializable {
    @Serial
    private static final long serialVersionUID = -5781257487230051345L;

    /**
     * 关联对象Id;
     */
    @TableField(value = "relaId")
    private String relaId;

    /**
     * 关联类型:0:系统,1:商品
     */
    @TableField(value = "relaType")
    private String relaType;

    /**
     * 文件名称;(1.png)
     */
    @TableField(value = "fileName")
    private String fileName;

    /**
     * 路径
     */
    @TableField(value = "path")
    private String path;

    /**
     * 类型:0:其他,1:图片,2:视频,3:音频,4:压缩包,5:word,6:xlsx,7:ppt
     */
    @TableField(value = "fileType")
    private String fileType;

    /**
     * 大小
     */
    @TableField(value = "length")
    private Integer length;

    @TableField(exist = false)
    private String fileTypeStr;
    @TableField(exist = false)
    private String relaTypeStr;

    public JSONObject getEnumsJson() {
        JSONObject enumsJson = super.getEnumsJson();
        AtSysFilesEnum[] enumsArr = AtSysFilesEnum.values();
        for (AtSysFilesEnum enumsTemp : enumsArr) {
            String varName = enumsTemp.toString();
            String[] varNameArr = varName.split(ConstatFinalUtil.FINAL_JAVA_ENUMS_SPLIT);
            if (varNameArr.length == 2) {
                /* 条目 */
                JSONObject jsonEntryTemp = new JSONObject();
                jsonEntryTemp.put(ConstatFinalUtil.FINAL_ENUMSVAL, varName);
                jsonEntryTemp.put(ConstatFinalUtil.FINAL_CODE, enumsTemp.getCode());
                jsonEntryTemp.put(ConstatFinalUtil.FINAL_INFO, enumsTemp.getInfo());

                String jsonKey = varNameArr[0];
                /* 源数组 */
                JSONArray jsonArrVal = enumsJson.getJSONArray(jsonKey);
                if (Objects.isNull(jsonArrVal)) {
                    jsonArrVal = new JSONArray();
                }
                jsonArrVal.add(jsonEntryTemp);

                /* 存储最终结果 */
                enumsJson.put(jsonKey, jsonArrVal);
            }
        }
        return enumsJson;
    }

    public String getFileTypeStr() {
        AtSysFilesEnum[] enumsArr = AtSysFilesEnum.values();
        for (AtSysFilesEnum enumsTemp : enumsArr) {
            String varName = enumsTemp.toString();
            if (varName.startsWith("FILETYPE_") && enumsTemp.getCode().equalsIgnoreCase(this.getFileType()) ) {
                this.fileTypeStr = enumsTemp.getInfo();
                break;
            }
        }
        return fileTypeStr;
    }

    public String getRelaTypeStr() {
        AtSysFilesEnum[] enumsArr = AtSysFilesEnum.values();
        for (AtSysFilesEnum enumsTemp : enumsArr) {
            String varName = enumsTemp.toString();
            if (varName.startsWith("RELATYPE_") && enumsTemp.getCode().equalsIgnoreCase(this.getRelaType()) ) {
                this.relaTypeStr = enumsTemp.getInfo();
                break;
            }
        }
        return relaTypeStr;
    }
}